ú╣czy (scala) rekordy z dw≤ch tabel, je£li wsp≤lne pole zawiera odpowiadaj╣ce sobie warto£ci.
FROM tabela_1 INNER JOIN tabela_2 ON tabela_1.pole_1 op_por tabela_2.pole_2
Sk│adnia operacji INNER JOIN zawiera nastΩpuj╣ce elementy:
Element | Opis |
---|---|
tabela_1, tabela_2 | Nazwy tabel, kt≤rych rekordy s╣ │╣czone (scalane). |
pole_1, pole_2 | Nazwy p≤l sprzΩgaj╣cych. Je£li nie s╣ one typu numerycznego, pola musz╣ byµ tego samego typu danych i zawieraµ ten sam rodzaj danych, ale nie musz╣ mieµ tej samej nazwy. |
op_por | Dowolny operator por≤wnania: "=", "<", ">", "<=", ">=" lub "<>". |
Operacja INNER JOIN mo┐e byµ u┐yta w dowolnej klauzuli FROM. Jest to najczΩ£ciej wystΩpuj╣cy typ sprzΩ┐enia. SprzΩ┐enia wewnΩtrzne │╣cz╣ rekordy z dw≤ch tabel, je£li w polu wsp≤lnym dla obu tabel znajduj╣ siΩ odpowiadaj╣ce sobie warto£ci.
Operacja INNER JOIN zastosowana do tabel Dzia│y i Pracownicy mo┐e zostaµ u┐yta do wyboru wszystkich pracownik≤w zatrudnionych w ka┐dym dziale. Je£li jednak chcemy wybraµ wszystkie dzia│y (nawet je£li w niekt≤rych z nich nie ma pracownik≤w) lub wszystkich pracownik≤w (nawet je£li niekt≤rzy z nich nie pracuj╣ w ┐adnym dziale), to musimy u┐yµ operacji LEFT JOIN lub RIGHT JOIN do utworzenia sprzΩ┐enia zewnΩtrznego.
Podczas pr≤by sprzΩgania p≤l zawieraj╣cych dane typu Memo lub obiekt OLE wystΩpuje b│╣d.
Mo┐na sprz╣c dwa pola numeryczne podobnych typ≤w. Na przyk│ad, mo┐na sprz╣c pola Autonumer i Long, poniewa┐ s╣ one podobnych typ≤w. Nie mo┐na natomiast sprz╣c p≤l typu Single i Double.
Przyk│ad przedstawiony poni┐ej pokazuje, w jaki spos≤b mo┐na sprz╣c tabele Kategorie i Produkty wed│ug pola NrKategorii.
SELECT NazwaKategorii, NazwaProduktu
FROM Kategorie INNER JOIN Produkty
ON Kategorie.NrKategorii = Produkty.NrKategorii;
W poprzednim przyk│adzie NrKategorii jest polem sprzΩ┐onym, ale nie jest ono uwzglΩdnione w wyniku kwerendy, poniewa┐ nie jest zawarte w instrukcji SELECT. Aby do│╣czyµ pole sprzΩgaj╣ce, nale┐y dodaµ nazwΩ pola do instrukcji SELECT ù w tym przypadku Kategorie.NrKategorii.
W jednej instrukcji JOIN mo┐na umie£ciµ wiele klauzul ON, u┐ywaj╣c nastΩpuj╣cej sk│adni:
SELECT pola
FROM tabela_1 INNER JOIN tabela_2
ON tabela_1.pole_1 op_por tabela_2.pole_1 AND
ON tabela_1.pole_2 op_por tabela_2.pole_2) OR
ON tabela_1.pole_3 op_por tabela_2.pole_3)];
Mo┐na r≤wnie┐ zagnie┐d┐aµ instrukcje JOIN, u┐ywaj╣c nastΩpuj╣cej sk│adni:
SELECT pola
FROM tabela_1 INNER JOIN
(tabela_2 INNER JOIN [( ] tabela_3
[INNER JOIN [( ] tabela_x [INNER JOIN ...)]
ON tabela_3.pole_3 op_por tabela_x.pole_x)]
ON tabela_2. pole_2 op_por tabela_3.pole_3)
ON tabela_1. pole_1 op_por tabela_2.pole_2;
Operacje LEFT JOIN i RIGHT JOIN mog╣ byµ zagnie┐d┐one wewn╣trz operacji INNER JOIN, lecz operacja INNER JOIN nie mo┐e byµ zagnie┐d┐ona wewn╣trz operacji LEFT JOIN lub RIGHT JOIN.
INNER JOIN û przyk│ad operacji